android之sharedpreference的两种使用方法 您所在的位置:网站首页 my preference android之sharedpreference的两种使用方法

android之sharedpreference的两种使用方法

#android之sharedpreference的两种使用方法| 来源: 网络整理| 查看: 265

sharedPreferences的介绍:

1.sharedPreferences是一种轻型的数据存储方式,它的本质是基于xml文件存储key-value键值对数据,通常用来存储一些简单的配置信息,其存储位置在/data/data//shared_prefs目录下。sharedPreferences对象本身只能获取数据而不支持存储和修改,存储和修改是通过Editor对象实现的。

2.sharedpreferences对象对比sqlite数据库,免去了创建数据库,创建表,写SQL语句等操作,更加易用,但sharedpreference仅支持以下数据类型:

boolean  int   float   long   String

但是无法进行条件查询等,所以不论sharedpreference的数据存储是如何简单,它也只能是存储方式的一种补充,而无法完全替代如sqlite数据库等其他数据存储方式。

3.sharedPreferences的使用:包含两种方法:直接使用和通过xml文件使用

(1)直接使用:

  a.首先定义一个SharedPreferences对象以及Editor对象,因为我们知道SharedPreferences对象是通过Editor对象来修改的:

private SharedPreferences preferences;private SharedPreferences.Editor editor;  b.对定义的两个对象初始化:我们看到prefrences通过getPreferences()和传入一个MODE_PRIVATE来获取,其实传入的参数有两个,MODE_PRIVATE表示为默认,还有个参数为MODE_MULTI_PROCESS,这个一般用于会有多个进程对同一个sharedpreference进行读写的情况下 preferences=getPreferences(MODE_PRIVATE);editor=preferences.edit();   c.进行读写操作:   写操作:使用起来很简单,只要通过editor调用putstring函数来添加数据,然后再调用commit即可。 private String KEY="myKey"; editor.putString(KEY,editText.getText().toString());if (editor.commit()){ Toast.makeText(MainActivity.this,"写入成功",Toast.LENGTH_SHORT).show();}   读操作:使用preference对象通过getstring函数,第一个参数为我们写操作时设定的KEY值,第二参数为数据不存在时,默认值 String data=preferences.getString(KEY,"数据不存在");Toast.makeText(MainActivity.this,data,Toast.LENGTH_SHORT).show();  d.完整代码如下:MainActivity.java 1 package base.learnsharedprefence; 2 3 import android.content.Intent; 4 import android.content.SharedPreferences; 5 import android.preference.PreferenceActivity; 6 import android.support.v7.app.AppCompatActivity; 7 import android.os.Bundle; 8 import android.view.View; 9 import android.widget.EditText; 10 import android.widget.Toast; 11 12 public class MainActivity extends AppCompatActivity implements View.OnClickListener { 13 private SharedPreferences preferences; 14 private SharedPreferences.Editor editor; 15 private EditText editText; 16 private String KEY="myKey"; 17 @Override 18 protected void onCreate(Bundle savedInstanceState) { 19 super.onCreate(savedInstanceState); 20 setContentView(R.layout.activity_main); 21 preferences=getPreferences(MODE_PRIVATE); 22 editor=preferences.edit(); 23 editText= (EditText) findViewById(R.id.edit); 24 findViewById(R.id.btnRead).setOnClickListener(this); 25 findViewById(R.id.btnWrite).setOnClickListener(this); 26 findViewById(R.id.btnJump).setOnClickListener(this); 27 } 28 29 @Override 30 public void onClick(View v) { 31 switch (v.getId()){ 32 case R.id.btnRead: 33 String data=preferences.getString(KEY,"数据不存在"); 34 Toast.makeText(MainActivity.this,data,Toast.LENGTH_SHORT).show(); 35 break; 36 case R.id.btnWrite: 37 editor.putString(KEY,editText.getText().toString()); 38 if (editor.commit()){ 39 Toast.makeText(MainActivity.this,"写入成功",Toast.LENGTH_SHORT).show(); 40 } 41 break; 42 case R.id.btnJump: 43 startActivity(new Intent(MainActivity.this, MyPreferenceActivity.class)); 44 break; 45 } 46 } 47 } View Code

布局文件:

1 2 8 9 14 20 26 32 View Code

  e.效果图:

  

  d.查看方式:点击问号左边图标,知道data/data/包名/shared_prefs,右上角可以导出到电脑中查看

  

  

(2)通过xml文件来定义:

  a.先在res目录下创建一个xml文件夹,然后再里面创建一个xml文件:这里主要讲解三种常用的控件,checkboxpreference  listpreference  edittextpreference

checkboxpreference:

                  

第一个参数为key值,必须要定义,剩下的三个参数对比图像应该很清楚。

listpreference:

  

第一个参数也是为key,必须定义,title和summary属性很清楚,主要是entries和entryvalues这两个属性,我们可以看到他们都是调用了array中的内容,所以我们是要先在res/values/下定义一个xml文件,内容如下:

1 2 3 4 Java 5 Swift 6 C# 7 8 9 Eclips 10 Xcode 11 Visual Studio 12 13 View Code

edittextpreference:

 b.实现完布局文件后,我们就要是去加载它,创建一个类继承PreferenceActivity

  (1)定义控件和管理者:

private PreferenceManager manager;private CheckBoxPreference checkBoxPreference;private ListPreference listPreference;private EditTextPreference editTextPreference; (2)加载定义的布局文件: addPreferencesFromResource(R.xml.mypreference); (3)实例化控件:我们可以看到实例化方式和普通控件的实例化方式有些不同,这里传入的是一个字符串,即是KEY值,所以我们之前在布局文件中强调一定要定义KEY值就是为了之后的实例化使用 manager=getPreferenceManager();checkBoxPreference= (CheckBoxPreference)manager.findPreference("checkbox");listPreference= (ListPreference) manager.findPreference("list");editTextPreference= (EditTextPreference) manager.findPreference("edit");

 (4)获取到相关数据,并打印出来:

System.out.println("当前状态为:"+checkBoxPreference.isChecked());System.out.println(listPreference.getEntry()+"的开发环境是"+listPreference.getValue());System.out.println("你输入的内容是"+editTextPreference.getText());(5)最好注意要在mainfest定义:

完整代码:MyPreferenceActivity:

1 package base.learnsharedprefence; 2 3 import android.os.Bundle; 4 import android.preference.CheckBoxPreference; 5 import android.preference.EditTextPreference; 6 import android.preference.ListPreference; 7 import android.preference.PreferenceActivity; 8 import android.preference.PreferenceManager; 9 import android.widget.Toast; 10 11 public class MyPreferenceActivity extends PreferenceActivity { 12 private PreferenceManager manager; 13 private CheckBoxPreference checkBoxPreference; 14 private ListPreference listPreference; 15 private EditTextPreference editTextPreference; 16 @Override 17 protected void onCreate(Bundle savedInstanceState) { 18 super.onCreate(savedInstanceState); 19 addPreferencesFromResource(R.xml.mypreference); 20 manager=getPreferenceManager(); 21 checkBoxPreference= (CheckBoxPreference)manager.findPreference("checkbox"); 22 listPreference= (ListPreference) manager.findPreference("list"); 23 editTextPreference= (EditTextPreference) manager.findPreference("edit"); 24 System.out.println("当前状态为:"+checkBoxPreference.isChecked()); 25 System.out.println(listPreference.getEntry()+"的开发环境是"+listPreference.getValue()); 26 System.out.println("你输入的内容是"+editTextPreference.getText()); 27 } 28 } View Code

mypreference.xml:

1 2 3 9 15 21 View Code

 

 

 

 

 

 

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有